Parameters
filtered_data <- read.csv("data/data-2023-09-11 (2).csv", header = TRUE)
Warning: cannot open file 'data/data-2023-09-11 (2).csv': No such file or directoryError in file(file, "rt") : cannot open the connection
data filtering convertion
mydata_genind
/// GENIND OBJECT /////////
// 698 individuals; 6 loci; 48 alleles; size: 195 Kb
// Basic content
@tab: 698 x 48 matrix of allele counts
@loc.n.all: number of alleles per locus (range: 5-12)
@loc.fac: locus factor for the 48 columns of @tab
@all.names: list of allele names for each locus
@ploidy: ploidy of each individual (range: 2-2)
@type: codom
@call: df2genind(X = filtered_data[, 6:11], sep = "/", ncode = 6, ind.names = filtered_data$indv,
pop = filtered_data$Population, NA.char = "0/0", ploidy = 2,
type = "codom", strata = NULL, hierarchy = NULL)
// Optional content
@pop: population of each individual (group size range: 24-166)
Run basic.stats and render the result
HW - Panmixia
library("pegas")
hw.test(as.loci(mydata_genind), B = 1000)
Linkage Disequilibrium
LD(as.loci(mydata_genind$tab), locus = c(1, 2), details = TRUE)
a<-LDscan(as.loci(mydata_hierfstat[,2:7]))
LDmap(a)
head(mydata_hierfstat[,2:7])
library("poppr")
pair.ia(mydata_genind, sample = 9)
shuffle df
#shuffled_matrices <- replicate(n_rep, mat[sample(nrow(mat)), ], simplify = FALSE)
shuffled_matrices <- replicate(n_rep, mat[sample(length(mat), replace = FALSE)], simplify = FALSE)
##################
# shuffle only the genotype and add the pop column later for each matrices.
#in the loop?
###############
# Create a list to store the wc
fst_df <- numeric(sequence_length)
fis_df <- numeric(sequence_length)
# Calculate the average for each shuffled matrix
# Iterate through the shuffled matrices
for (i in 1:n_rep) {
# Calculate the statistics for the i-th matrix
#HERE THE COLUMN POP
merged_df <- cbind(level_pop, shuffled_matrices[[i]])
result_f_stats <- wc(shuffled_matrices[[i]])
result_f_stats <- as.data.frame(result_f_stats$per.loc)
# Extract FST and FIS values
fst_values <- result_f_stats$FST
fis_values <- result_f_stats$FIS
print( fst_values)
# Assign values to the data frames
fst_df <- cbind(fst_df, result_f_stats$FST)
fis_df <- cbind(fis_df, result_f_stats$FIS)
}
# Set row names as in result_f_stats
rownames(fst_df) <- rownames(fis_df) <- rownames(result_f_stats)
result_FST <- fst_df[, -1]
fis_df <-fis_df[, -1]
vec <- seq(1, n_rep)
colnames(result_FST) <- colnames(fis_df) <- vec
result_FST[1,]
count (result_f_stats[,1][1] > result_FST[1,] )
count <- sum(result_f_stats[,1][1] > result_FST[1, ])
# Initialize an empty data frame to store the counts
count_df <- data.frame(
Greater = numeric(length(result_FST)),
Smaller = numeric(length(result_FST))
)
# Compare the values in result_f_stats[1] to result_FST for each column
for (col in colnames(result_FST)) {
greater_count <- sum(result_f_stats[1] > result_FST[, col])
smaller_count <- sum(result_f_stats[1] < result_FST[, col])
count_df$Greater[col] <- greater_count
count_df$Smaller[col] <- smaller_count
}
# Print the count data frame
print(count_df)
######################## ########################
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBQYXJhbWV0ZXJzIAoKYGBge3J9CmZpbHRlcmVkX2RhdGEgPC0gcmVhZC5jc3YoImRhdGEtMjAyMy0wOS0xMSAoMikuY3N2IiwgaGVhZGVyID0gVFJVRSkKCnNlbGVjdGVkX3N0YXRzIDwtIGMoIkhvIiwgIkhzIiwgIkh0IiwgIkZpcyAoVyZDKSIsICJGc3QgKFcmQykiLCAiRmlzIChOZWkpIiwgIkZzdCAoTmVpKSIKKQoKbl9yZXA9MTAKCnNlcXVlbmNlX2xlbmd0aCA8LSBsZW5ndGgoNjoxMSkgCmBgYAoKCgojIGRhdGEgZmlsdGVyaW5nIGNvbnZlcnRpb24KCmBgYHtyfQpsaWJyYXJ5KGhpZXJmc3RhdCkKCmZpbHRlcmVkX2RhdGEgPC0gZGF0YS5mcmFtZShpbmR2ID0gcGFzdGUoc3Vic3RyKGZpbHRlcmVkX2RhdGEkUG9wdWxhdGlvbiwxLDMpLCByb3cubmFtZXMoZmlsdGVyZWRfZGF0YSksIHNlcD0iLiIpLCBmaWx0ZXJlZF9kYXRhKQojIENyZWF0ZSBteWRhdGFfZ2VuaW5kCnBvcHVsYXRpb24gPC0gZmlsdGVyZWRfZGF0YSRQb3B1bGF0aW9uCm15ZGF0YV9nZW5pbmQgPC0gZGYyZ2VuaW5kKAogIFggPSBmaWx0ZXJlZF9kYXRhWyw2OjExXSwKICBzZXAgPSAiLyIsCiAgbmNvZGUgPSA2LAogIGluZC5uYW1lcyA9IGZpbHRlcmVkX2RhdGEkaW5kdiwKICBwb3AgPSBmaWx0ZXJlZF9kYXRhJFBvcHVsYXRpb24sCiAgTkEuY2hhciA9ICIwLzAiLAogIHBsb2lkeSA9IDIsCiAgdHlwZSA9ICJjb2RvbSIsCiAgc3RyYXRhID0gTlVMTCwKICBoaWVyYXJjaHkgPSBOVUxMCikKbXlkYXRhX2dlbmluZApteWRhdGFfaGllcmZzdGF0IDwtIGdlbmluZDJoaWVyZnN0YXQobXlkYXRhX2dlbmluZCkKYGBgCgoKCiMgUnVuIGJhc2ljLnN0YXRzIGFuZCByZW5kZXIgdGhlIHJlc3VsdAoKYGBge3J9CmxpYnJhcnkoInBlZ2FzIikKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWJibGUpCgpyZXN1bHQgPC0gYmFzaWMuc3RhdHMobXlkYXRhX2hpZXJmc3RhdCkKZGZfcmVzdXRsX2Jhc2ljPC1hcy5kYXRhLmZyYW1lKHJlc3VsdCRwZXJsb2MpCgojIFdlaXIgYW5kIENvY2tyaGFtIGVzdGltYXRlcyBvZiBGc3RhdGlzdGljcyAtIEZJUyBhbmQgRlNUIApyZXN1bHRfZl9zdGF0cyA8LSBGc3QoYXMubG9jaShteWRhdGFfZ2VuaW5kKSkKcmVzdWx0X2Zfc3RhdHMgPC0gcmVzdWx0X2Zfc3RhdHNbLDI6M10KY29sbmFtZXMocmVzdWx0X2Zfc3RhdHMpIDwtIGMoIkZzdCAoVyZDKSIsICJGaXMgKFcmQykiKQpyZXN1bHRfZl9zdGF0cyA8LSBtZXJnZShyZXN1bHRfZl9zdGF0cywgZGZfcmVzdXRsX2Jhc2ljLCBieT0icm93Lm5hbWVzIixhbGwueD1UUlVFKQpjb2xuYW1lcyhyZXN1bHRfZl9zdGF0cylbMTBdIDwtICJGc3QgKE5laSkiCmNvbG5hbWVzKHJlc3VsdF9mX3N0YXRzKVsxMl0gPC0gIkZpcyAoTmVpKSIKcmVzdWx0X2Zfc3RhdHMgPC0gcmVzdWx0X2Zfc3RhdHMgJT4lIGNvbHVtbl90b19yb3duYW1lcyguLCB2YXIgPSAnUm93Lm5hbWVzJykKcmVzdWx0X2Zfc3RhdHNfc2VsZWMgPC0gcmVzdWx0X2Zfc3RhdHMgJT4lIHNlbGVjdChhbGxfb2Yoc2VsZWN0ZWRfc3RhdHMpKQpyZXN1bHRfZl9zdGF0c19zZWxlYwpgYGAKCgoKIyBNaXNzaW5nIGRhdGEKCmBgYHtyfQojIExpYnJhcmllcwpsaWJyYXJ5KCJwb3BwciIpCmxpYnJhcnkoImhlYXRtYXBseSIpCgptaXNzaW5nX2RhdGEgPC0gaW5mb190YWJsZShteWRhdGFfZ2VuaW5kLCBwbG90ID0gRkFMU0UpCgojIE1hdHJpeCBmb3JtYXQKbWF0IDwtIGFzLm1hdHJpeChtaXNzaW5nX2RhdGEpCiMgaGVhdG1hcApwIDwtIGhlYXRtYXBseShtYXQsIAogICAgICAgICAgICAgICBkZW5kcm9ncmFtID0gIm5vbmUiLAogICAgICAgICAgICAgICB4bGFiID0gIiIsIHlsYWIgPSAiIiwgCiAgICAgICAgICAgICAgIG1haW4gPSAiIiwKICAgICAgICAgICAgICAgc2NhbGUgPSAiY29sdW1uIiwKICAgICAgICAgICAgICAgbWFyZ2lucyA9IGMoNjAsMTAwLDQwLDIwKSwKICAgICAgICAgICAgICAgZ3JpZF9jb2xvciA9ICJ3aGl0ZSIsCiAgICAgICAgICAgICAgIGdyaWRfd2lkdGggPSAwLjAwMDAxLAogICAgICAgICAgICAgICB0aXRsZVggPSBGQUxTRSwKICAgICAgICAgICAgICAgaGlkZV9jb2xvcmJhciA9IFRSVUUsCiAgICAgICAgICAgICAgIGJyYW5jaGVzX2x3ZCA9IDAuMSwKICAgICAgICAgICAgICAgbGFiZWxfbmFtZXMgPSBjKCJQb3B1bGF0aW9uIiwgIk1hcmtlciIsICJWYWx1ZSIpLAogICAgICAgICAgICAgICBmb250c2l6ZV9yb3cgPSA4LCBmb250c2l6ZV9jb2wgPSA4LAogICAgICAgICAgICAgICBsYWJDb2wgPSBjb2xuYW1lcyhtYXQpLAogICAgICAgICAgICAgICBsYWJSb3cgPSByb3duYW1lcyhtYXQpLAogICAgICAgICAgICAgICBoZWF0bWFwX2xheWVycyA9IHRoZW1lKGF4aXMubGluZT1lbGVtZW50X2JsYW5rKCkpCikKcApgYGAKCgoKIyBIVyAtIFBhbm1peGlhCgpgYGB7cn0KCgpsaWJyYXJ5KCJwZWdhcyIpCgpody50ZXN0KGFzLmxvY2kobXlkYXRhX2dlbmluZCksIEIgPSAxMDAwKQpgYGAKCgoKIyBMaW5rYWdlIERpc2VxdWlsaWJyaXVtCgpgYGB7cn0KCkxEKGFzLmxvY2kobXlkYXRhX2dlbmluZCR0YWIpLCBsb2N1cyA9IGMoMSwgMiksIGRldGFpbHMgPSBUUlVFKQoKYTwtTERzY2FuKGFzLmxvY2kobXlkYXRhX2hpZXJmc3RhdFssMjo3XSkpCgpMRG1hcChhKQoKCmhlYWQobXlkYXRhX2hpZXJmc3RhdFssMjo3XSkKCgpsaWJyYXJ5KCJwb3BwciIpCnBhaXIuaWEobXlkYXRhX2dlbmluZCwgc2FtcGxlID0gOSkKCmBgYAoKCiMgc2h1ZmZsZSBkZgoKYGBge3J9Cgojc2h1ZmZsZWRfbWF0cmljZXMgPC0gcmVwbGljYXRlKG5fcmVwLCBtYXRbc2FtcGxlKG5yb3cobWF0KSksIF0sIHNpbXBsaWZ5ID0gRkFMU0UpCnNodWZmbGVkX21hdHJpY2VzIDwtIHJlcGxpY2F0ZShuX3JlcCwgbWF0W3NhbXBsZShsZW5ndGgobWF0KSwgcmVwbGFjZSA9IEZBTFNFKV0sIHNpbXBsaWZ5ID0gRkFMU0UpCiMjIyMjIyMjIyMjIyMjIyMjIwojIHNodWZmbGUgb25seSB0aGUgZ2Vub3R5cGUgYW5kIGFkZCB0aGUgcG9wIGNvbHVtbiBsYXRlciBmb3IgZWFjaCBtYXRyaWNlcy4gCiNpbiB0aGUgbG9vcD8gCiMjIyMjIyMjIyMjIyMjIwoKCiMgQ3JlYXRlIGEgbGlzdCB0byBzdG9yZSB0aGUgd2MKZnN0X2RmIDwtIG51bWVyaWMoc2VxdWVuY2VfbGVuZ3RoKQpmaXNfZGYgPC0gbnVtZXJpYyhzZXF1ZW5jZV9sZW5ndGgpCgojIENhbGN1bGF0ZSB0aGUgYXZlcmFnZSBmb3IgZWFjaCBzaHVmZmxlZCBtYXRyaXgKCiMgSXRlcmF0ZSB0aHJvdWdoIHRoZSBzaHVmZmxlZCBtYXRyaWNlcwpmb3IgKGkgaW4gMTpuX3JlcCkgewogICMgQ2FsY3VsYXRlIHRoZSBzdGF0aXN0aWNzIGZvciB0aGUgaS10aCBtYXRyaXgKICAjSEVSRSBUSEUgQ09MVU1OIFBPUAogIG1lcmdlZF9kZiA8LSBjYmluZChsZXZlbF9wb3AsIHNodWZmbGVkX21hdHJpY2VzW1tpXV0pCiAgcmVzdWx0X2Zfc3RhdHMgPC0gd2Moc2h1ZmZsZWRfbWF0cmljZXNbW2ldXSkgCiAgcmVzdWx0X2Zfc3RhdHMgPC0gYXMuZGF0YS5mcmFtZShyZXN1bHRfZl9zdGF0cyRwZXIubG9jKQogICMgRXh0cmFjdCBGU1QgYW5kIEZJUyB2YWx1ZXMKICBmc3RfdmFsdWVzIDwtIHJlc3VsdF9mX3N0YXRzJEZTVAogIGZpc192YWx1ZXMgPC0gcmVzdWx0X2Zfc3RhdHMkRklTCiAgcHJpbnQoIGZzdF92YWx1ZXMpCiAgIyBBc3NpZ24gdmFsdWVzIHRvIHRoZSBkYXRhIGZyYW1lcwogIGZzdF9kZiA8LSBjYmluZChmc3RfZGYsIHJlc3VsdF9mX3N0YXRzJEZTVCkKICBmaXNfZGYgPC0gY2JpbmQoZmlzX2RmLCByZXN1bHRfZl9zdGF0cyRGSVMpCn0KCiMgU2V0IHJvdyBuYW1lcyBhcyBpbiByZXN1bHRfZl9zdGF0cwoKcm93bmFtZXMoZnN0X2RmKSA8LSByb3duYW1lcyhmaXNfZGYpIDwtIHJvd25hbWVzKHJlc3VsdF9mX3N0YXRzKQpyZXN1bHRfRlNUIDwtIGZzdF9kZlssIC0xXQpmaXNfZGYgPC1maXNfZGZbLCAtMV0KdmVjIDwtIHNlcSgxLCBuX3JlcCkKY29sbmFtZXMocmVzdWx0X0ZTVCkgPC0gY29sbmFtZXMoZmlzX2RmKSA8LSB2ZWMKCgpyZXN1bHRfRlNUWzEsXSAKCmNvdW50IChyZXN1bHRfZl9zdGF0c1ssMV1bMV0gPiByZXN1bHRfRlNUWzEsXSApCmNvdW50IDwtIHN1bShyZXN1bHRfZl9zdGF0c1ssMV1bMV0gPiByZXN1bHRfRlNUWzEsIF0pCgoKCiMgSW5pdGlhbGl6ZSBhbiBlbXB0eSBkYXRhIGZyYW1lIHRvIHN0b3JlIHRoZSBjb3VudHMKY291bnRfZGYgPC0gZGF0YS5mcmFtZSgKICBHcmVhdGVyID0gbnVtZXJpYyhsZW5ndGgocmVzdWx0X0ZTVCkpLAogIFNtYWxsZXIgPSBudW1lcmljKGxlbmd0aChyZXN1bHRfRlNUKSkKKQoKIyBDb21wYXJlIHRoZSB2YWx1ZXMgaW4gcmVzdWx0X2Zfc3RhdHNbMV0gdG8gcmVzdWx0X0ZTVCBmb3IgZWFjaCBjb2x1bW4KZm9yIChjb2wgaW4gY29sbmFtZXMocmVzdWx0X0ZTVCkpIHsKICBncmVhdGVyX2NvdW50IDwtIHN1bShyZXN1bHRfZl9zdGF0c1sxXSA+IHJlc3VsdF9GU1RbLCBjb2xdKQogIHNtYWxsZXJfY291bnQgPC0gc3VtKHJlc3VsdF9mX3N0YXRzWzFdIDwgcmVzdWx0X0ZTVFssIGNvbF0pCiAgY291bnRfZGYkR3JlYXRlcltjb2xdIDwtIGdyZWF0ZXJfY291bnQKICBjb3VudF9kZiRTbWFsbGVyW2NvbF0gPC0gc21hbGxlcl9jb3VudAp9CgojIFByaW50IHRoZSBjb3VudCBkYXRhIGZyYW1lCnByaW50KGNvdW50X2RmKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAKCmBgYAoKIwoKYGBge3J9CgoKYGBgCgojCgpgYGB7cn0KCgpgYGAKCiMKCmBgYHtyfQoKCmBgYAoKIwoKYGBge3J9CgoKYGBgCgojCgpgYGB7cn0KCgpgYGAKCiMKCmBgYHtyfQoKCmBgYAoKIwoKYGBge3J9CgoKYGBgCgojCgpgYGB7cn0KCgpgYGAKCiMKCmBgYHtyfQoKCmBgYAo=